package com.tongzhan.service;

import com.tongzhan.base.Return;
import com.tongzhan.entity.User;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface UserService {

    /**
     * 新增用户
     *
     * @param user
     * @return
     */
    Return addUser(User user);

    /**
     * 编辑用户接口(信息管理修改用户信息)
     * @param user
     * @return
     */
    Return editUser(User user);

    /**
     * 修改密码
     *
     * @param userId
     * @param oldPassword
     * @param newPassword
     * @return
     */
    Return changePassword(String userId, String oldPassword, String newPassword);

    /**
     * 用户个人信息编辑
     *
     * @param userId
     * @param realName
     * @param telephone
     * @return
     */
    Return editUserInfo(String userId, String realName, String telephone);

    /**
     * 获取用户信息列表
     *
     * @param dutiesCode
     * @param realName
     * @param page
     * @param size
     * @return
     */
    Return getUserList(String dutiesCode, String realName, Integer page, Integer size);

    /**
     * 根据用户id查询用户信息
     *
     * @param userId
     * @return
     */
    User selectByUserId(String userId);

    /**
     * 宗教用户登录
     *
     *
     * @param response
     * @param username
     * @param password
     * @return
     */
    Return login(HttpServletResponse response, String username, String password);

    /**
     * 根据场所查询用户信息
     *
     * @param siteCode
     * @return
     */
    User selectUserBySiteCode(String siteCode);

    /**
     * 查询未上报宗教团体用户
     *
     * @param codes
     * @param dutiesCode
     * @return
     */
    List<User> selectUnReport(List<String> codes, String dutiesCode);

    /**
     * 角标提醒用户
     *
     * @param users
     */
    void signReminder(List<User> users);

    /**
     * 获取用户对应的模块标识
     *
     * @param userId
     * @return
     */
    Return getUserSign(String userId);

    /**
     * 删除用户
     *
     * @param userId
     * @return
     */
    Return deleteUser(String userId);

    /**
     * 获取宗教类别及民间信仰点个数
     *
     * @return
     */
    Return getCount();

    /**
     * 获取场所信息
     *
     * @param userId
     * @return
     */
    Return getSiteInfo(String userId);

    /**
     * 根据用户id获取用户信息
     *
     * @param userId
     * @return
     */
    Return getUserInfo(String userId);

    /**
     * 重置密码
     *
     * @param userId
     */
    void resetPassword(String userId);
}
